/**
 * 
 */
package pe.gob.osinergmin.interfase_siaf.dac.util;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class FechasUtil {

	private static DateFormat format_full = new SimpleDateFormat(
			"yyyy-mm-dd HH:mm:ss"); //yyyy-mm-dd HH:mm:ss   //dd/MM/yyyy HH:mm:ss

	private static DateFormat format = new SimpleDateFormat("dd/MM/yyyy");	

	// devuelve la fecha actual formateada tipo TIMESTAMP
	/**
	 * getFechaActual. devuelve la fecha actual tipo dd/MM/yyyy HH:mm:ss
	 * 
	 * @return the string date
	 */
	public static String getFechaActual() {
		Calendar cal = Calendar.getInstance();
		Date fecha = cal.getTime();
		return format.format(fecha);

	}

	// devuelve la fecha actual
	/**
	 * getToDate. devuelve la fecha actual tipo dd/MM/yyyy HH:mm:ss
	 * 
	 * @return the date
	 */
	public static Date getToDate() {
		Calendar cal = Calendar.getInstance();
		format_full.setCalendar(cal);
		return cal.getTime();
	}

	// devuelve la fecha actual formateada tipo DATE
	/**
	 * getToDay. devuelve la fecha actual formateada tipo dd/MM/yyyy
	 * 
	 * @return the date
	 */
	public static Date getToDay() {
		Calendar cal = Calendar.getInstance();
		format.setCalendar(cal);
		return cal.getTime();
	}

	// convierte una fecha de String a Date
	/**
	 * getFechaStringToDate. devuelve la fecha en tipo date
	 * 
	 * @param date
	 *            the date
	 * @return the date
	 */
	public static Date getFechaStringToDate(String date) {
		Date fecha = null;
		try {
			System.out.println("Fecha para convertir a date: "+date); 
			fecha = format.parse(date);
			return fecha;
		} catch (Exception ex) {
			return null;
		}
	}

	public static String getAnioActual() {
		Calendar cal = Calendar.getInstance();
		Date fecha = cal.getTime();
		SimpleDateFormat format = new SimpleDateFormat("yyyy");
		String anio = format.format(fecha);
		return anio;
	}
	
	
	public static boolean isFechaValida(String fecha) {
        try {
            SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());            
            formatoFecha.setLenient(false);
            formatoFecha.parse(fecha);
            int tamanio = fecha.length();           
            String line = fecha.substring(tamanio-5, tamanio-4);           
            if(!line.equals("/")){ 
            	return false;
            }
            String anio = fecha.substring(tamanio-4, tamanio); 
            if(Integer.valueOf(anio)<1900){
            	return false;
            }
            if(Integer.valueOf(anio)>2100){
            	return false;
            }
        } catch (Exception e) {
        	System.out.println("Formato de fecha invalido"); 
            return false;
        }
        return true;
    }
	

}
